package com.fenghuajueli.libbasecoreui.baseswitch;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;

import com.alibaba.android.arouter.launcher.ARouter;
import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.fenghuajueli.libbasecoreui.constants.SwitchConfig;
import com.fenghuajueli.libbasecoreui.listener.CheckCanExportCallback;
import com.fenghuajueli.libbasecoreui.user.UserInfoUtils;
import com.fenghuajueli.libbasecoreui.utils.MmkvUtils;
import com.fenghuajueli.lib_data.constants.KVConstants;
import com.fenghuajueli.module_route.UserModuleRoute;

public class PublicFunction {


    /**
     * 跳转去应用市场评论
     *
     * @param context
     */
    public static void goComment(Context context) {
        try {
            Uri uri = Uri.parse("market://details?id=" + context.getPackageName());
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
        } catch (Exception e) {
            ToastUtils.showShort("您的手机未安装应用市场");
            e.printStackTrace();
        }
    }


    /**
     * 是否能跳转去使用功能
     *
     * @return true表示可以跳转到功能界面
     */
    public static boolean checkCanNext() {
        if (SwitchKeyUtils.getPayStatus()) {
            if (checkIsCanFreeUse()) {
                return true;
            } else {
                if (UserInfoUtils.getInstance().isLogin()) {
                    if (UserInfoUtils.getInstance().isVip()) {
                        return true;
                    } else {
                        ARouter.getInstance().build(UserModuleRoute.USER_OPEN_VIP_ACTIVITY).navigation();
                    }
                } else {
                    ARouter.getInstance().build(UserModuleRoute.USER_LOGIN).navigation();
                }
            }
        } else {
            return true;
        }
        return false;
    }


    /**
     * 跳转去购买vip
     */
    public static void goBuyVip() {
        if (UserInfoUtils.getInstance().isLogin()) {
            ARouter.getInstance().build(UserModuleRoute.USER_OPEN_VIP_ACTIVITY).navigation();
        } else {
            ARouter.getInstance().build(UserModuleRoute.USER_LOGIN).withString("type", "needToVip").navigation();
        }
    }


    /**
     * 检测是否需要弹出评论框
     *
     * @return
     */
    public static boolean checkIsShowCommentDialog() {
        boolean isAlreadyComment = MmkvUtils.mmkv.decodeBool(KVConstants.ALREADY_COMMENT, false);
        if (!isAlreadyComment) {
            if (SwitchConfig.currentChannel.toUpperCase().equals(SwitchConfig.CHANNEL.HUAWEI.name())) {
                LogUtils.d("华为渠道检测是否需要弹出评论框---》");
                //华为渠道需要每使用三次后弹出评论框
                int lastUseCount = MmkvUtils.mmkv.decodeInt(KVConstants.LAST_USE_COUNT, 0);
                int currentUseCount = MmkvUtils.mmkv.decodeInt(KVConstants.CURRENT_USE_COUNT, 0);

                if (currentUseCount - lastUseCount >= 3) {
                    MmkvUtils.mmkv.encode(KVConstants.LAST_USE_COUNT, currentUseCount);
                    MmkvUtils.mmkv.encode(KVConstants.CURRENT_USE_COUNT, currentUseCount);
                    LogUtils.d("当前使用的次数间隔已经超过三次----》" + lastUseCount + "----》" + currentUseCount);
                    return true;
                } else {
                    LogUtils.d("当前使用的次数间隔没有超过三次----》" + lastUseCount + "----》" + currentUseCount);
                    MmkvUtils.mmkv.encode(KVConstants.CURRENT_USE_COUNT, ++currentUseCount);
                    return false;
                }
            } else {
                LogUtils.d("当前不是华为渠道需要每次都弹出评论框-----》");
                return true;
            }
        } else {
            return false;
        }
    }


    /**
     * 检查是否还能免费试用
     *
     * @return
     */
    public static boolean checkIsCanFreeUse() {
        int alreadyUseCount = MmkvUtils.mmkv.decodeInt(KVConstants.ALREADY_USE_COUNT, 0);
        LogUtils.d("免费使用次数检测：" + SwitchKeyUtils.getFreeTime() + "已经使用的次数：" + alreadyUseCount);
        if (SwitchKeyUtils.getFreeTime() > 0) {
            if (SwitchKeyUtils.getFreeTime() - alreadyUseCount > 0) {
                MmkvUtils.mmkv.encode(KVConstants.ALREADY_USE_COUNT, ++alreadyUseCount);
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    }

    /**
     * 评论开关打开时 检测是否能进行使用
     *
     * @return
     */
    public static boolean checkIsCommentCanNext() {
        if (SwitchKeyUtils.getCommentStatus()) {
            if (UserInfoUtils.getInstance().isLogin()) {
                if (UserInfoUtils.getInstance().isVip()) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return true;
        }

    }


    /**
     * 是否能导出视频
     *
     * @return true表示可以导出
     */
    public static boolean checkCanExport() {
        if (SwitchKeyUtils.getPayStatus()) {
            if (UserInfoUtils.getInstance().isLogin()) {
                if (UserInfoUtils.getInstance().isVip()) {
                    return true;
                } else {
                    ARouter.getInstance().build(UserModuleRoute.USER_OPEN_VIP_ACTIVITY).navigation();
                }
            } else {
                ARouter.getInstance().build(UserModuleRoute.USER_LOGIN)
                        .withString("type", "needToVip")
                        .navigation();
            }
        } else {
            return true;
        }
        return false;
    }



    /**
     * 是否能导出视频
     *
     * @return true表示可以导出
     */
    public static void checkCanExport(CheckCanExportCallback checkCanExportCallback) {
        if (SwitchKeyUtils.getPayStatus()) {
            if (UserInfoUtils.getInstance().isLogin()) {
                if (UserInfoUtils.getInstance().isVip()) {
                    checkCanExportCallback.goNext();
                } else {
                    checkCanExportCallback.goOpenVip();
                }
            } else {
                checkCanExportCallback.goLogin();
            }
        } else {
            checkCanExportCallback.goNext();
        }
    }


}
